package com.feituan.core.util;

import cn.hutool.crypto.symmetric.SymmetricAlgorithm;
import cn.hutool.crypto.symmetric.SymmetricCrypto;
import org.springframework.util.StringUtils;

public class SecureUtil {


    /**
     * 采用固定的密钥（使用AES算法要求长度为16、24或32字节）
     * 注意：这里千万不能更改
     */
    private static final byte[] FIXED_KEY = "ug7o1zubg9rp7p6c8pmum63ylvt2uhku".getBytes();


    /**
     * 使用固定密钥创建AES加密解密对象
     */
    private static final SymmetricCrypto aes = new SymmetricCrypto(SymmetricAlgorithm.AES, FIXED_KEY);

    /**
     * 加密
     * @param targetStr  目标字符串
     * @return
     */
    public static String encrypt(String targetStr) {
        if (StringUtils.isEmpty(targetStr)) {
            throw new RuntimeException("加密失败，目标字符串为空");
        }
        return aes.encryptBase64(targetStr);
    }

    /**
     * 解密
     * @param encryptStr  加密后的字符串
     * @return
     */
    public static String decryption(String encryptStr) {
        if (StringUtils.isEmpty(encryptStr)) {
            throw new RuntimeException("解密失败，加密字符串为空");
        }
        return aes.decryptStr(encryptStr);
    }
}
